#include "TcpServer.hpp"     //通信
#include "commandExcute.hpp" //业务
#include <memory>
using namespace std;
// ./TcpServer port
void Usage(string proc)
{
    cout << "Usage:" << proc << "server-port" << endl;
}

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }
    uint16_t port = stoi(argv[1]);                                      // 字符串转换整形，拿到端口号
    Command cmd("./safe.txt");                                          // 初始化业务对象
    func_t cmdExec = bind(&Command::Excute, &cmd, placeholders::_1);    // 绑定Excute方法给cmdExec函数指针
    unique_ptr<TcpServer> tsvr = make_unique<TcpServer>(port, cmdExec); // 把端口号和业务方法传递给TcpServer构造函数使其构造

    tsvr->InitServer(); // 初始化服务器
    tsvr->Loop();       // 循环服务

    return 0;
}